package com.fruit.sdk.account;

/**
 * @author joe
 */
public interface NoticeManager {
    /**
     * 实名认证成功通知
     *
     * @param uid 用户ID
     */
    void allowCert(long uid);

    /**
     * 实名认证失败通知（只有人工通道走该通知）
     *
     * @param uid 用户ID
     */
    void rejectCert(long uid);

    /**
     * 提现成功
     *
     * @param uid     用户ID
     * @param way     提现方式，例如：支付宝（137****1234）或者银行卡（1234****1234）
     * @param balance 当前账户余额，单位元，格式如0.10，保留小数点后两位
     * @param count   提现金额，单位元，格式如0.10，保留小数点后两位
     */
    void allowCashout(long uid, String way, String balance, String count);

    /**
     * 提现被拒
     *
     * @param uid      用户ID
     * @param count    提现金额，单位元，格式如0.10，保留小数点后两位
     * @param date     提现申请日期，格式：MM月dd日
     * @param cashMode 提现方式，00银行卡，01支付宝
     * @param cause    被拒原因
     */
    void rejectCashout(long uid, String count, String date, String cashMode, String cause);

    /**
     * 根据用户UID获取用户手机号（从UserInfo中获取的）
     *
     * @param uid 用户UID
     * @return 用户手机号，当用户不存在时或者用户手机号为空时返回null
     */
    String getUserPhone(long uid);

    /**
     * 获取用户头像
     *
     * @param uid 用户ID
     * @return 用户头像
     */
    String getUserHeader(long uid);

    /**
     * 通知模板
     */
    enum Templete {
        ALLOWCERT("恭喜您可以去认养心仪的果树了，您的实名认证已处理完成"), REJECTCERT("1、认证信息不匹配，请重新认证。\n2、证件照片信息不清晰，请重新认证"), ALLOWCASHOUT
                ("您已成功提现${count}元至${way}，当前余额为${balance}元。"), REJECTCASHOUTBYBANK
                ("您于${date}发起的${count}元提现申请，因填写的银行卡信息有误，银行打款未成功，请您核对信息重新申请。"),
        REJECTCASHOUTBYALIPY("您于${date}发起的${count}元提现申请，因填写的支付宝账号有误，无法完成打款操作，请您核对信息重新申请。");

        private String temp;

        Templete(String temp) {
            this.temp = temp;
        }

        public String toString() {
            return this.temp;
        }
    }

    /**
     * 通知类型
     */
    enum MsgType {
        ALLOWCERT("认证成功"), REJECTCERT("人工审核——认证失败"), ALLOWCASHOUT("提现成功"), REJECTCASHOUT("提现失败");

        private String title;

        MsgType(String title) {
            this.title = title;
        }

        @Override
        public String toString() {
            return this.title;
        }
    }
}
